package cn.hl.hm.service;

import com.vizhuo.client.base.AbstractVo;
import com.vizhuo.client.business.appmanage.vo.AppVersionVo;
import com.vizhuo.client.business.match.goods.vo.BoundsVo;
import com.vizhuo.client.business.match.goods.vo.GoodsVo;

import cn.hl.hm.entity.HelpInfo;

/**
 * 推送至 司机客户端 服务
 * 
 * @author dcq 作者 E-mail: ding_chuanqin@163.com
 * @date 创建时间：2016年7月1日 下午3:10:39
 * @version 1.0
 * @parameter
 * @since
 * @return
 */
public interface AppPushToDriverService {
    /**
     * 获取周边i公里的最大最小经纬度
     * 
     * @param boundsVo
     * @param i
     *            公里
     * @return
     */
    public BoundsVo getsubLnglat(BoundsVo boundsVo, int i);

    /**
     * 我要用车、我要发货接口，推送信息给同城司机接口
     * 
     * @param goodsVo
     *            货源、用车信息
     * @return 返回成功推送数
     */
    public int pushGoodToSameCity(GoodsVo goodsVo) throws Exception;

    /**
     * 我要用车、我要发货接口，推送信息给干线司机接口
     * 
     * @param goodsVo
     *            货源、用车信息
     * @return 返回成功推送数
     */
    public int pushGoodToDifferenceCity(GoodsVo goodsVo) throws Exception;

    /**
     * 精确找车推送给司机
     * 
     * @param phoneNumber
     * @param goodsVo
     * @throws Exception
     */
    public void pushOrderToDriverOrder(String phoneNumber, GoodsVo goodsVo) throws Exception;


    /**
     * 承运人评价发货方
     * 
     * @param targetPhoneNumber
     *            司机的账号（手机号）
     * @param driverName
     *            评价者的姓名
     * @param evalnum
     *            星级,0-5
     */
    public void pushEvaluation(String targetPhoneNumber, String valuatorName, String evalnum, String goodsNo)
            throws Exception;

    /**
     * 推送强制更新通知给司机android客户端
     * 
     * @throws Exception
     */
    public void pushForceUpgrade4Android(AppVersionVo appVersionVo) throws Exception;

    /**
     * 给审核信息推送消息
     * 
     * @param phoneNumber
     *            手机号
     * @param pushText
     *            标题
     * @param accountType
     *            文本内容
     * @param abstractVo
     *            登录对象(MebInfoVo ,MebDriverVo， MebConsignerVo),不同账号不同
     * @throws Exception
     */
    public void pushMsgByAccount(String phoneNumber, String pushTitle, String pushText, String accountType,
            AbstractVo abstractVo) throws Exception;

    /**
     * 推送消息-单播
     * 
     * @param phoneNumber
     *            手机号
     * @param pushTitle
     *            标题
     * @param pushText
     *            文本内容
     */
    public void pushSysMsgByAccount(int operationType, String phoneNumber, String pushTitle, String pushText)
            throws Exception;

    /**
     * 系统消息-所有设备
     * 
     * @param title
     *            标题
     * @param pushText
     *            文本内容
     * @throws Exception
     */
    public void pushSysMsgAll(String title, String pushText) throws Exception;

    /**
     * 系统消息-所有设备
     * 
     * @param operationType
     *            类型
     * @param pushTitle
     *            标题
     * @param pushText
     *            文本内容
     * @throws Exception
     */
    public void pushSysMsgAll(int operationType, String title, String pushText) throws Exception;

    /**
     * 帮扶信息-给所有符合周边的司机推送
     * 
     * @param helpInfo
     * @param respBoundsVo
     */
    public void pushHelp(HelpInfo helpInfo, BoundsVo respBoundsVo) throws Exception;

    /**
     * 推送测试-所有设备(列播)
     * 
     * @param operationTypeSysMsgAll
     * @param title
     * @param context
     */
    public void pushTest(int operationType, String title, String context);

    /**
     * 同城取消订单推送
     * 
     * @param operationTypeSysMsgAll
     * @param title
     * @param context
     */
    public int pushCancelOrderBySameCity(GoodsVo goodsVo) throws Exception;
}
